package br.com.financas.bean;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import org.primefaces.context.RequestContext;

import br.com.financas.abstractions.IContaService;
import br.com.financas.entity.Conta;
import br.com.financas.service.ContaService;

@ManagedBean
@ViewScoped
public class ModalAlterarContaBean extends AbstractBean {
	
	private Conta contaSelecionada;
	private boolean negativo = true;
	private String titulo;
	private double saldo;
	private IContaService<Conta> contaService = new ContaService();

	public Conta getContaSelecionada() {
		return contaSelecionada;
	}

	public void setContaSelecionada(Conta contaSelecionada) {
		this.contaSelecionada = contaSelecionada;
		titulo = contaSelecionada.getTitulo();
		saldo = contaSelecionada.getSaldo();
		negativo = contaSelecionada.getSaldo() < 0 ? true : false;
	}

	public boolean isNegativo() {
		return negativo;
	}

	public void setNegativo(boolean negativo) {
		this.negativo = negativo;
	}

	public void alteraConta() {
		RequestContext context = RequestContext.getCurrentInstance();
		boolean inptTitulo = false;
		String msgErro = null;
		double saldoSelecionado = contaSelecionada.getSaldo();
		
		if (negativo == true) {
			contaSelecionada.setSaldo(saldoSelecionado * -1);
		}

		msgErro = contaService.validarAtualizarPorTitulo(contaSelecionada, titulo);

		if (contaSelecionada.getTitulo() != null && msgErro == null) {
			inptTitulo = true;
			displayInfoMessageToUser("conta.alteracao");
		} 
		
		
		if (msgErro != null) {
			displayWarnMessageToUser(msgErro);
			contaSelecionada.setTitulo(titulo);
			contaSelecionada.setSaldo(saldo);
		}
		
		context.addCallbackParam("inptTitulo", inptTitulo);
		

	}
}
